package com.tianya.service;

import com.tianya.domain.dto.MessageQueryDTO;
import com.tianya.domain.dto.MessageSendDTO;
import com.tianya.domain.vo.MessageVO;
import com.tianya.domain.vo.PageResultVO;
import com.tianya.domain.vo.UnreadCountVO;

import java.util.List;

public interface MessageService {

    /**
     * 获取收件箱消息
     * @param userId 用户ID
     * @param queryDTO 查询条件
     * @return 分页消息列表
     */
    PageResultVO<MessageVO> getInboxMessages(Long userId, MessageQueryDTO queryDTO);

    /**
     * 发送消息
     * @param userId 发送者ID
     * @param messageDTO 消息内容
     * @return 是否发送成功
     */
    Boolean sendMessage(Long userId, MessageSendDTO messageDTO);

    /**
     * 标记消息为已读
     * @param messageId 消息ID
     * @param userId 用户ID
     * @return 是否标记成功
     */
    Boolean markAsRead(Long messageId, Long userId);

    /**
     * 删除消息
     * @param messageId 消息ID
     * @param userId 用户ID
     * @return 是否删除成功
     */
    Boolean deleteMessage(Long messageId, Long userId);

    /**
     * 获取未读消息数量
     * @param userId 用户ID
     * @return 未读消息统计
     */
    UnreadCountVO getUnreadCount(Long userId);

    /**
     * 获取与指定用户的消息历史
     * @param userId 当前用户ID
     * @param otherUserId 对方用户ID
     * @return 消息历史列表
     */
    List<MessageVO> getMessageHistory(Long userId, Long otherUserId);

    /**
     * 获取消息详情
     * @param messageId 消息ID
     * @param userId 当前用户ID
     * @return 消息详情
     */
    MessageVO getMessageDetail(Long messageId, Long userId);
}